#include "StdAfx.h"
#include "Map.h"
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

//Map::Map(char * name, CSceneManager * smgr)
//{
//    initStyle(name);
//    for(int i = 0; i < NUMLEN; i++)
//    {
//        for(int j = 0; j < NUMHHT; j++)
//        {
//            switch(styleMap[i][j])
//            {
//				case MAP_STYLE::dust:
//				case style::family:
//				case style::road:
//				case style::stone:
//				case style::tree:
//				case style::water:
//				tankMap[i][j] = new MapNode(style::water,smgr,i,j);
//            }
//        }
//    }
//}
//
//
//Map::~Map(void)
//{
//}
//void Map::initStyle(char * name)
//{
//    std::string  str;
//    std::string substr;
//    int j = 0;
//    int i = 0;
//    std::ifstream file(name);
//    while(std::getline(file,str))
//    {
//        std::string::size_type begin = 0;
//        std::string::size_type end = 0;
//        begin = str.find_last_not_of(' ',begin);
//        while(begin != std::string::npos)
//        {
//            end = str.find_first_of(' ',begin);
//            if(end == std::string::npos)
//            {
//                substr = str.substr(begin);
//                styleMap[i][j] = atoi(substr.c_str());
//                j++;
//                break;
//            }
//            substr = str.substr(begin,end-begin);
//            styleMap[i][j] = atoi(substr.c_str());
//            j++;
//            begin = str.find_first_not_of(' ',end);
//        }
//        j = 0;
//        i++;
//    }
//}

void Map::initMap(char *mapPath)
{
	cout<<"Map LoadIng..."<<endl;
	string str;
	string substr;
	ifstream file(mapPath);
	int i = 0;
	int j = 0;
	while (getline(file, str))
	{
		string::size_type begin = 0;
		string::size_type end = 0;
		begin = str.find_first_not_of(" ",begin);
		while (begin != string::npos)
		{
			end = str.find_first_of(" ",begin);
			if(end == std::string::npos)
			{
				substr = str.substr(begin);
				mapFile[i][j] = atoi(substr.c_str());
				//if (++j > LENTH)
				//{
				//	cout<<"Error Map File!"<<endl;
				//	return;
				//}
				++j;
				break;			
			}
			substr = str.substr(begin,end-begin);
			mapFile[i][j] = atoi(substr.c_str());
			//if (++j > LENTH)
			//{
			//	cout<<"Error Map File!"<<endl;
			//	return;
			//}
			++j;
			begin = str.find_first_not_of(" ",end);
		}
		j = 0;
		//if (++i > HEIGHT)
		//{
		//	cout<<"Error Map File! "<<endl;
		//	return;
		//}
		++i;
	}
}

Vector3f Map::getPos( int x ,int z)
{
	Vector3f position;
	position.mX = 2.5*(float)x;
	position.mY = 0;
	position.mZ = 2.5*(float)z;
	return position;
}

int Map::getNodeState( int x, int y )
{
	return mapFile[x][y];
}